#include "ti_msp_dl_config.h"

/********************静态变量定义********************/
static volatile int32_t r_motor_pulse = 0;
static volatile int32_t l_motor_pulse = 0;

/********************全局函数定义********************/

/**
 * @brief	电机测速中断使能
 */
void motor_speed_measure_int_enable(void)
{
	NVIC_ClearPendingIRQ(ENCORDER_INT_IRQN);
	NVIC_EnableIRQ(ENCORDER_INT_IRQN);
}

/**
 * @brief	电机测速中断失能
 */
void motor_speed_measure_int_disable(void)
{
	NVIC_DisableIRQ(ENCORDER_INT_IRQN);
}

/**
 * @brief	右电机测速中断回调
 */
void r_motor_speed_measure(void)
{
	uint8_t r_motor_dir;
	
	r_motor_dir = ((DL_GPIO_readPins(ENCORDER_PORT,  ENCORDER_RIGHT_DIR_PIN)) != 0 ? 1 : -1);
	
	if(r_motor_dir == 1)	
	{
		r_motor_pulse++;
	}
	else
	{ 
		r_motor_pulse--;		
	}
}

/**
 * @brief	左电机测速中断回调
 */
void l_motor_speed_measure(void)
{
	uint8_t l_motor_dir;
	
	l_motor_dir = ((DL_GPIO_readPins(ENCORDER_PORT,  ENCORDER_LEFT_DIR_PIN)) != 0 ? 1 : -1)*-1;//左电机测速方向相反
	
	if(l_motor_dir == 1)	
	{
		l_motor_pulse++;
	}
	else
	{ 
		l_motor_pulse--;		
	}
}

/**
 * @brief	获取右电机测速脉冲数
 */
int32_t r_motor_get_pulse(void)
{
	return r_motor_pulse;
}

/**
 * @brief	获取左电机测速脉冲数
 */
int32_t l_motor_get_pulse(void)
{
	return l_motor_pulse;
}

/**
 * @brief	设置右电机测速脉冲数
 */
void r_motor_set_pulse(int32_t pulse)
{
	r_motor_pulse = pulse;
}

/**
 * @brief	设置左电机测速脉冲数
 */
void l_motor_set_pulse(int32_t pulse)
{
	l_motor_pulse = pulse;
}
